import {createRouter, createWebHashHistory, createWebHistory, RouteRecordRaw} from 'vue-router'
import {staticRoutes} from './constantRoutes'
import userInfoStore from "@/store/modules/model/userInfoModel";


const router = createRouter({
    history: createWebHistory(),
    routes: staticRoutes as RouteRecordRaw[],
    // 刷新时，滚动条位置还原
    scrollBehavior: () => ({left: 0, top: 0}),
})

router.beforeEach(async (to, from, next) => {
    let userInfo = userInfoStore()
    let token = userInfo.token
    let userInfoData = userInfo.userInfoData

//todo 1. 先判断token是否存在
    if (token) {
        //todo 2. 表示token存在，即已登录
        if (to.path === '/login') {
            //todo 3. 若要跳转到/login，既然已登录，则直接跳转到首页/
            next('/')
        } else {
            //todo 4. 若跳转到其他组件，则判断用户信息是否已经获取
            if (userInfoData.name) {
                //todo 5. 表示已经获取了用户信息，放行
                next()
            } else {
                //todo 6. 表示未获取用户信息，获取
                await userInfo.getUserInfo();
                //todo 放行
                next()
            }
        }
    } else {
        //todo 表示未登录，判断当前是否跳转到/login，若是则放行
        if (to.path === '/login') {
            next()
        } else {
            //todo 表示未登录，且直接访问其他组件，则强制跳转到/login
            next('/login')
        }
    }
})

export default router